package game.worlds;

import echo.Shape;
import hx.display.IEventDispatcher;
import game.data.FrameData;

interface IAttackDisplay extends IEventDispatcher extends IDisplay {
	/**
	 * 当前生效的攻击碰撞帧数据
	 */
	public var currentHitColliderFrameData(get, set):FrameData;

	/**
	 * 队伍值
	 */
	public var troop:Int;

	public var nowTime:Float;

	/**
	 * 获得角色，如果角色自身存在，则返回角色自身，否则返回关系role
	 * @return Role
	 */
	public function getRole():GameRole;

	/**
	 * 攻击方向
	 */
	public var hitScaleX(get, never):Int;

	/**
	 * 卡帧时间
	 */
	public var cardFrameTime:Float;

	/**
	 * 设置卡帧时间
	 * @param time 
	 */
	public function setStopFrameTime(time:Float):Void;

	/**
	 * 当攻击敌人时调用
	 * @param enemy 
	 */
	public function onAttackEnemy(enemy:IAttackDisplay):Void;

	/**
	 * 碰撞检测，可以是特效与角色之间的碰撞，也可以是特效与特效之间的碰撞检测
	 * @param collider 
	 * @return Bool
	 */
	public function testCollider(collider:IAttackDisplay):Bool;

	/**
	 * 获得当前碰撞列表
	 * @return Array<Shape>
	 */
	public function getColliders():Array<Shape>;

	/**
	 * 根据昵称获得特效显示对象（当前角色或者特效释放的特效），但请注意，自已释放出去的特效中产生的特效，此方法是无法定位的
	 * @param name 
	 * @return DisplayObject
	 */
	public function getGameEffectByName(name:String):GameEffect;
}
